//同时发送异步代码的次数
let ajaxTimes = 0;
// 此处request不是作用域,而是一个代码块,变量可以直接使用
export const request = (params) => {
  // 平级变量可以调用, 作用域: 内层可以调用外层
  ajaxTimes++;
  // 显示加载中 效果
  wx.showLoading({
    title: "加载中",
    // 有了mask: true, 其它页面操作都无法操作,因为蒙版挡住了其它页面
    mask: true,
  });


  /*  wx.showLoading({
     title: '加载中',
   })
   
   setTimeout(function () {
     wx.hideLoading()
     
     // 1. 5秒后,关闭显示图标
     // 2. 1000 ms = 1 s
     
   }, 5000) */

  // 定义公共的url
  // url: "https://apifoxmock.com/m1/4804022-4458330-default/api/public/v1/home/category"
  const baseUrl = "https://apifoxmock.com/m1/4804022-4458330-default/api/public/v1/home"
  // const baseUrl="https://api-hmugo-web.itheima.net/api/public/v1/home"

  return new Promise((resolve, reject) => {
    wx.request({
      // 把params的代码全部结构出来
      ...params,
      // 小封装: 公共baseUrl + 传递过来的url = 完整的接口路径
      url: baseUrl + params.url,
      success: (result) => {
        // result就表示请求成功后的值,此时就把里面的数组直接赋值给res
        resolve(result.data.message)
      },
      fail: (err) => {
        reject(err);
      },
      complete: () => {
        ajaxTimes--;
        if (ajaxTimes === 0) {
          // 无论网络api发送成功与否,都要关闭正在等待的图标
          // setTimeout(function () {
            wx.hideLoading();
          // }, 5000)
        }
      }
    })
  })
}

// 如果看不懂,课下一定一定一定学promise